import type { BannerItem, GridItem, InfoItem, SearchForm } from '../index'
import { useSimpleRoute } from '@/hooks'

// 搜索功能
export function useSearch() {
  const searchForm = ref<SearchForm>({
    keyword: '',
  })

  const handleSearch = (keyword: string) => {
    searchForm.value.keyword = keyword
    // 这里可以添加搜索逻辑
    console.log('搜索关键词:', keyword)
  }

  return {
    searchForm,
    handleSearch,
  }
}

// 轮播图数据
export function useBanners() {
  const banners = ref<BannerItem[]>([
    {
      id: 1,
      image: '/static/images/avatar.jpg',
      title: '春季新品上市',
      url: '/pages/product/list',
    },
    {
      id: 2,
      image: '/static/images/default-avatar.png',
      title: '限时优惠活动',
      url: '/pages/coupon/index',
    },
    {
      id: 3,
      image: '/static/images/avatar.jpg',
      title: '会员专享福利',
      url: '/pages/member/index',
    },
  ])

  const handleBannerClick = (item: BannerItem) => {
    if (item.url) {
      uni.navigateTo({ url: item.url })
    }
  }

  return {
    banners,
    handleBannerClick,
  }
}

// 宫格菜单数据
export function useGrids() {
  // 使用路由钩子获取一级路由数据
  const { routes, loading, error } = useSimpleRoute()

  // 将路由数据转换为GridItem格式
  const grids = computed<GridItem[]>(() => {
    if (loading.value || error.value || !routes.value || !Array.isArray(routes.value)) {
      return []
    }

    return routes.value.map((route, index) => {
      // 定义英文图标映射 - 根据route.icon的英文值来确定图标
      const iconMap: Record<string, string> = {
        settings: 'i-carbon-settings',
        user: 'i-carbon-user',
        home: 'i-carbon-home',
        shopping: 'i-carbon-shopping-cart',
        cart: 'i-carbon-shopping-cart',
        bag: 'i-carbon-shopping-bag',
        document: 'i-carbon-document',
        order: 'i-carbon-document',
        star: 'i-carbon-star',
        favorite: 'i-carbon-star',
        location: 'i-carbon-location',
        address: 'i-carbon-location',
        chat: 'i-carbon-chat',
        service: 'i-carbon-chat',
        information: 'i-carbon-information',
        about: 'i-carbon-information',
        schedule: 'i-solar-align-vertical-center-linear',
        task: 'i-solar-align-vertical-center-linear',
        // 兼容中文映射（保留原有功能）
        购物车: 'i-carbon-shopping-cart',
        任务调度: 'i-solar-align-vertical-center-linear',
        我的: 'i-carbon-user',
        收藏: 'i-carbon-star',
        地址: 'i-carbon-location',
        客服: 'i-carbon-chat',
        首页: 'i-carbon-home',
        关于: 'i-carbon-information',
        用户: 'i-carbon-user',
        系统: 'i-carbon-settings',
        系统管理: 'i-carbon-settings',
        商品: 'i-carbon-shopping-bag',
        订单: 'i-carbon-document',
      }

      // 定义颜色映射
      const colorMap: Record<string, string> = {
        任务调度: 'bg-blue-200',
        系统管理: 'bg-gray-200',
        订单: 'bg-orange-500',
        我的: 'bg-purple-500',
        收藏: 'bg-red-500',
        地址: 'bg-indigo-500',
        客服: 'bg-teal-500',
        设置: 'bg-gray-500',
        首页: 'bg-blue-500',
        关于: 'bg-cyan-500',
        用户: 'bg-pink-500',
        系统: 'bg-gray-600',
        商品: 'bg-yellow-500',
      }

      // 使用路由自带的icon（如果有），否则使用名称映射，最后使用默认图标
      let icon = 'i-carbon-apps' // 默认图标

      // 优先使用路由的icon字段（英文值）
      if (route.icon && iconMap[route.icon]) {
        icon = `i-carbon-${iconMap[route.icon]}`
      }
      // 其次使用路由的name字段
      else if (route.name && iconMap[route.name]) {
        icon = iconMap[route.name]
      }
      // 最后使用路由的title字段
      else if (route.title && iconMap[route.title]) {
        icon = iconMap[route.title]
      }

      let color = colorMap[route.title] || 'bg-blue-200'

      if (route.title && colorMap[route.title]) {
        color = colorMap[route.title]
      }
      return {
        id: route.id || index + 1,
        icon,
        title: route.title || route.name, // 优先使用title，如果没有则使用name
        color,
        url: route.path,
      }
    })
  })

  const handleGridClick = (item: GridItem) => {
    if (item.url) {
      uni.navigateTo({ url: item.url })
    }
  }

  return {
    grids,
    handleGridClick,
    loading,
    error,
  }
}

// 资讯列表数据
export function useInfos() {
  const infos = ref<InfoItem[]>([
    {
      id: 1,
      image: '/static/images/avatar.jpg',
      title: '最新优惠活动',
      desc: '全场商品8折起，限时抢购，机会难得！',
      tag: '热门',
      time: '2024-01-15',
    },
    {
      id: 2,
      image: '/static/images/default-avatar.png',
      title: '新品上市',
      desc: '全新产品正式上线，品质保证，值得信赖！',
      tag: '新品',
      time: '2024-01-14',
    },
    {
      id: 3,
      image: '/static/images/avatar.jpg',
      title: '会员专享',
      desc: '会员专属福利，积分兑换，优惠多多！',
      time: '2024-01-13',
    },
    {
      id: 4,
      image: '/static/images/default-avatar.png',
      title: '品牌合作',
      desc: '与知名品牌深度合作，为您带来更优质的体验',
      time: '2024-01-12',
    },
  ])

  const handleInfoClick = (item: InfoItem) => {
    uni.navigateTo({
      url: `/pages/info/detail?id=${item.id}`,
    })
  }

  return {
    infos,
    handleInfoClick,
  }
}
